package com.gientech.sys.event;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gientech.common.exception.AppException;
import com.gientech.common.util.MyBeanUtil;
import com.gientech.common.util.MyStringUtil;
import com.gientech.common.view.DataGrid;
import com.gientech.core.base.BaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.apache.ibatis.session.SqlSession;
@Slf4j
@Service
@Transactional
public class SysEventService extends BaseService<SysEventMapper, SysEvent> {
    /**
     * 【1】查询和分页
     *
     * @param dto
     *
     * @return
     */

    public DataGrid<SysEventVO> listEvent(SysEventDTO4List dto) {
        log.info("【查询条件--事件】" + dto);

        // 【1】 处理模糊查询条件的like(有3个方法addObjectLike，addObjectLikeLeft，addObjectLikeRight)
        MyStringUtil.addObjectLike(dto, "eventType,eventSmallType");

        // 【2】处理前端传入排序条件
        dto.setOrderBy(MyStringUtil.getOrderBy(dto.getSort(), dto.getOrder(), "a.REMIND_ID asc"));

        // 【3】构造分页参数
        Page<SysEventVO> page = new Page<>(dto.getPageNo(), dto.getPageSize());


        return new DataGrid<SysEventVO>(this.getBaseMapper().getSysEventList(page, dto), page.getTotal());
    }

    public void saveEvent(SysEventDTO4Save dto) {
        log.info("【新增--用户】" + dto);

        // 【1】 从dto中copy属性
        SysEvent sysEvent = new SysEvent();
        MyBeanUtil.copyPropertiesIgnoreNull(dto, sysEvent);

        // 【2】 校验id是否存在
        if (isExistEventId(sysEvent.getRemindId())) {
            throw new AppException("新增失败，用户ID【" + sysEvent.getRemindId() + "】已经存在！");
        }


        this.save(sysEvent);
    }

    /**
     * 【21】检查RemindId是否存在
     *
     * @param EventId
     * @return
     */
    private boolean isExistEventId(String EventId) {
        return this.getById(EventId) != null;
    }
}
